<template>
	<view class="">
		<view class="navbar-frame" :style="{
        height: `${menuInfo.contentTop}px`,
        // boxShadow: `0 0 3px -1px rgba(100, 100, 100, ${opacity})`
      }">
			<view class="navbar-content" :style="{
          top: `${menuInfo.menuTop}px`,
          height: `${menuInfo.menuHeight}px`,
        }">
				<view class="icon-switch">
					<uv-icon :name="icon" color="#fff" size="26"></uv-icon>
				</view>
				{{ title }}
			</view>
		</view>
	</view>
</template>

<script setup>
	import {
		onMounted,
		getCurrentInstance,
		ref,
		watch
	} from 'vue'

	// 获取全局 app 实例
	// 定义 props
	const props = defineProps({
		opacity: {
			type: Number,
			default: 1
		},
		title: {
			type: String,
			default: ''
		},
		icon: {
			type: String,
			default: ''
		}
	})

	// 获取全局的 menuInfo
	const menuInfo = ref({})

	uni.getSystemInfo({
		success: (result) => {
			let statusBarHeight = result.statusBarHeight
			const menuButtonInfo = uni.getMenuButtonBoundingClientRect()
			menuInfo.value = {
				statusBarHeight: result
					.statusBarHeight, //状态栏高度----用来给自定义导航条页面的顶部导航条设计padding-top使用：目的留出系统的状态栏区域
				menuWidth: menuButtonInfo.width, //右侧的胶囊宽度--用来给自定义导航条页面的左侧胶囊设置使用
				menuHeight: menuButtonInfo.height, //右侧的胶囊高度--用来给自定义导航条页面的左侧胶囊设置使用
				menuBorderRadius: menuButtonInfo.height / 2, //一半的圆角--用来给自定义导航条页面的左侧胶囊设置使用
				menuRight: result.screenWidth - menuButtonInfo
					.right, //右侧的胶囊距离右侧屏幕距离--用来给自定义导航条页面的左侧胶囊设置使用
				menuTop: menuButtonInfo.top, //右侧的胶囊顶部距离屏幕顶部的距离--用来给自定义导航条页面的左侧胶囊设置使用
				contentTop: result.statusBarHeight + 44, //内容区距离页面最上方的高度--用来给自定义导航条页面的内容区定位距离使用
			}
		},
		fail: (error) => {
			console.log(error)
		}
	})

	// 可以在这里添加 watch 逻辑
	// 例如监听 opacity 变化
	watch(
		() => props.opacity,
		(newVal) => {
			// 处理 opacity 变化的逻辑
		}
	)

	onMounted(() => {
		// 挂载时的逻辑
	})
</script>

<style lang="scss" scoped>
	.navbar-frame {
		position: fixed;
		width: 100%;
		top: 0;
		left: 0;
		z-index: 10;
		// background: linear-gradient(to right bottom, #6f9aec, #15b5df, #22c7cd, #ffffff);

		.navbar-content {
			width: 100%;
			position: absolute;
			left: 0;
			display: flex;
			border-radius: 999px;
			overflow: hidden;
			justify-content: center;
			align-items: center;
			color: #fff;
			font-size: 16px;

			.icon-switch {
				height: calc(100%);
				width: 30px;
				display: flex;
				justify-content: center;
				align-items: center;
				position: absolute;
				top: 50%;
				left: 30rpx;
				transform: translateY(-50%);
			}
		}
	}
</style>